package com.spic.business.train.trainUser.mapper;

import com.spic.business.hik.domain.HkAlarmDomain;
import com.spic.business.train.trainUser.domain.TrainUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 培训用户Mapper接口
 *
 * @author spic
 * @date 2021-10-15
 */
public interface TrainUserMapper {
    /**
     * 查询培训用户
     *
     * @param id 培训用户主键
     * @return 培训用户
     */
    public TrainUser selectTrainUserById(Long id);

    /**
     * 查询培训用户列表
     *
     * @param trainUser 培训用户
     * @return 培训用户集合
     */
    public List<TrainUser> selectTrainUserList(TrainUser trainUser);

    /**
     *
     * @return  考试不合格用户和合格用户list
     */
    public List<Map<String,Object>> selectTrainUserByExamEnd();
    /**
     * 新增培训用户
     *
     * @param trainUser 培训用户
     * @return 结果
     */
    public int insertTrainUser(TrainUser trainUser);

    /**
     * 修改培训用户
     *
     * @param trainUser 培训用户
     * @return 结果
     */
    public int updateTrainUser(TrainUser trainUser);

    /**
     * 删除培训用户
     *
     * @param id 培训用户主键
     * @return 结果
     */
    public int deleteTrainUserById(String id);

    /**
     * 批量删除培训用户
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTrainUserByIds(String[] ids);

    /**
     * 批量新增培训用户
     *
     * @param trainUsers 需要新增培训用户集合
     * @return 结果
     */
    public int insertTrainUsers(List<TrainUser> trainUsers);

    /**
     * 根据培训id删除培训用户
     *
     * @param trainInfoId 需要删除的数据的培训id
     * @return 结果
     */
    public int deleteTrainUserByTrainId(String trainInfoId);

    /**
     * 查询userId 集合
     *
     * @param trainInfoId id
     * @return 结果
     */
    public List<Long> setUserIds(String trainInfoId);

    /**
     * 查询为培训完用户的数量
     *
     * @param trainInfoId 培训信息主键
     * @return 结果
     */
    int countTrainNotEnd(String trainInfoId);

    /**
     * 查询id 集合
     *
     * @param trainInfoId id
     * @return 结果
     */
    List<Long> selectIds(String trainInfoId);

    TrainUser  selectTrainUserByTrainIdAndUserId(@Param("trainInfoId") String trainInfoId,@Param("userId") Long userId);

}
